Automated testing tools for software applications have been offered commercially since the late 1970s. Users of these tools can write scripts that provide them with instructions to simulate user actions including computer mouse movements and keyboard presses. Automated testing tools can also be programmed to capture values and state information from the application under test so that these values can be compared to benchmarks and used to ascertain whether the application under test is performing according to specification.
Existing tools allow users to create scripts via manual coding and recording. Manual coding involves writing instructions in a scripting language. Recorders are software programs that monitor and capture user activity including mouse movements and keyboard presses. Although recorders provide ease of use over manual coding, they can produce scripts that do not work reliably and are difficult to maintain.
To make the process of writing manual code simpler, it is known to use an automated software tool to recognize and classify graphical user interface (GUI) objects in an application under test (AUT). This can be accomplished, for example, by monitoring communications between the AUT and the operating system. Once a GUI object, such as a checkbox, list box, or table, is recognized, suitable tests for that object can be developed.
Assembling a complete set of coded tests for an application, such as website, and maintaining those tests as the website is updated can be a sizable undertaking, and can require the efforts of a number of highly skilled test employees. Moreover, once the development of an application or an update approaches completion and the application is fully available for testing, there is often tremendous organizational pressure to release it to end users. Improvements to the tools and processes used to generate software tests can therefore allow applications to be tested and released more quickly, and can help to lower test development costs.